home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
basic
/
qbnws204.zip
/
WINDOWS.ZIP
/
WINDEM.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-07-15
|
12KB
|
264 lines
' WINDEM.BAS popup window demonstration program
'
' Author: Christy Gemmell
' For: QuickBASIC Newsletter
' Date: 15/7/1991
'
' $DYNAMIC
'
' External functions and procedures in ASSEMBLY.LIB/QLB.
'
DECLARE FUNCTION Attribute% (BYVAL Fore%, BYVAL Back%)
DECLARE SUB Explode (BYVAL Y1%, BYVAL X1%, BYVAL Y2%, BYVAL X2%,_
BYVAL Attr%, BYVAL Speed%)
DECLARE SUB FastPrint (BYVAL Row%, BYVAL Col%, Message$, BYVAL Attr%)
DECLARE SUB PopUp (BYVAL Row%, BYVAL Col%, BYVAL Hght%, BYVAL Wdth%,_
BYVAL Attr%, BYVAL Brdr%, BYVAL Shdw%, BYVAL Zoom%)
DECLARE SUB ShutUp (BYVAL Speed%)
' Local functions and procedures included in this module.
'
DECLARE FUNCTION Randy% (Lowest%, Highest%)
DECLARE SUB FlushKey ()
RANDOMIZE TIMER
' Draw title and screen background.
'
CLS : LOCATE , , 0: FastPrint 1, 1, SPACE$(80), 31
FastPrint 1, 27, "POPUP WINDOW DEMONSTRATION", 31
FastPrint 2, 1, STRING$(80, "─"), 31
A$ = STRING$(1760, "░"): FastPrint 3, 1, A$, 30
FastPrint 25, 1, SPACE$(80), 48: A$ = ""
' Overture - pop up and close three batches of windows.
'
FOR M% = 1 TO 3
Area% = 0: O% = 0: B% = 1
DO
H% = Randy%(5, 10): W% = Randy%(14, 40)
Area% = Area% + (H% + 1) * (W% + 1)
IF Area% > 7200 THEN EXIT DO
K% = Randy%(4, 24 - H%): J% = Randy%(1, 79 - W%)
R% = Randy%(1, 4): S% = Randy%(1, 4)
Attrib% = Attribute%(15, B%)
PopUp K%, J%, H%, W%, Attrib%, R%, S%, -1
FastPrint K%, J% + ((W% \ 2) - 5), "[ WINDOW ]", Attrib%
O% = O% + 1: B% = B% + 1: IF B% > 6 THEN B% = 1
LOOP UNTIL O% = 30
IF (M% = 3) THEN SLEEP 3 ELSE SLEEP 1
FOR I% = O% TO 1 STEP -1
ShutUp -1
NEXT I%
NEXT M%
' Introduction - tell 'em what it's all about.
'
PopUp 4, 15, 10, 30, 52, 4, 1, -1: PopUp 3, 36, 13, 40, 47, 3, 1, -1
PopUp 9, 10, 13, 40, 31, 2, 1, -1: PopUp 12, 42, 11, 36, 67, 1, 1, -1
PopUp 2, 31, 5, 20, 78, 2, 1, -1: FastPrint 4, 34, "Presenting ...", 78
SLEEP 3: FlushKey: Attrib% = Attribute%(0, 7)
PopUp 8, 20, 7, 40, Attrib%, 2, 1, -1
FastPrint 8, 31, "[ QUICK WINDOWS ]", Attrib%
FastPrint 10, 29, "Windowing Routines for", Attrib%
FastPrint 11, 30, "Microsoft QuickBASIC", Attrib%
SLEEP 3: FlushKey: Attrib% = Attribute%(0, 3)
PopUp 17, 55, 7, 24, Attrib%, 1, 3, -1
FastPrint 19, 66, "By", Attrib%
FastPrint 20, 59, "Christy Gemmell", Attrib%
SLEEP 3: FlushKey: Attrib% = Attribute%(14, 1)
PopUp 13, 2, 10, 23, Attrib%, 2, 4, 0
FastPrint 15, 4, "A Library of screen", Attrib%
FastPrint 16, 4, "handling procedures", Attrib%
FastPrint 17, 4, "and functions which", Attrib%
FastPrint 18, 4, "can be incorporated", Attrib%
FastPrint 19, 4, "in your QuickBASIC", Attrib%
FastPrint 20, 9, "programs.", Attrib%
SLEEP 4: FlushKey: Attrib% = Attribute%(15, 1)
PopUp 16, 27, 5, 26, Attrib%, 2, 1, 0
FastPrint 18, 30, "HOLD ONTO YOUR HATS", Attrib%
SLEEP 2: FlushKey: FOR I% = 1 TO 9: ShutUp -1: NEXT
' Start simple - show a plain unadorned window.
'
Attrib% = 112: PopUp 9, 16, 8, 50, Attrib%, 2, 2, 0: RESTORE
FOR I% = 10 TO 15: READ Me$: FastPrint I%, 19, Me$, Attrib%: NEXT
SLEEP 6: FlushKey: Explode 10, 17, 15, 64, Attrib%, 0
FOR I% = 12 TO 13: READ Me$: FastPrint I%, 19, Me$, Attrib%: NEXT
SLEEP 5: FlushKey: PopUp 5, 5, 6, 35, Attribute%(1, 2), 0, 1, -1
SLEEP 3: FlushKey: ShutUp -1: Explode 10, 17, 15, 64, 112, 0
FOR I% = 12 TO 13: READ Me$: FastPrint I%, 19, Me$, 112: NEXT
' Demonstrate the full set of border styles.
'
SLEEP 6: FlushKey: Attrib% = Attribute%(15, 6)
PopUp 6, 5, 8, 35, Attrib%, 0, 2, -1
FastPrint 6, 15, "[ No Frame ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(11, 1)
PopUp 7, 8, 8, 35, Attrib%, 1, 2, -1
FastPrint 7, 17, "[ Frame Style 1 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(0, 2)
PopUp 8, 11, 8, 35, Attrib%, 2, 2, -1
FastPrint 8, 20, "[ Frame Style 2 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(0, 3)
PopUp 9, 14, 8, 35, Attrib%, 3, 2, -1
FastPrint 9, 23, "[ Frame Style 3 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(14, 4)
PopUp 10, 17, 8, 35, Attrib%, 4, 2, -1
FastPrint 10, 26, "[ Frame Style 4 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(12, 5)
PopUp 11, 20, 8, 35, Attrib%, 5, 2, -1
FastPrint 11, 29, "[ Frame Style 5 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(13, 6)
PopUp 12, 23, 8, 35, Attrib%, 6, 2, -1
FastPrint 12, 32, "[ Frame Style 6 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(15, 2)
PopUp 13, 26, 8, 35, Attrib%, 7, 2, -1
FastPrint 13, 35, "[ Frame Style 7 ]", Attrib%
SLEEP 1: FlushKey: Attrib% = Attribute%(1, 3)
PopUp 14, 29, 8, 35, Attrib%, 8, 2, -1
FastPrint 14, 39, "[ Frame Style 8 ]", Attrib%
SLEEP 4: FlushKey: FOR I% = 1 TO 9: ShutUp -1: NEXT
' Display the range of foreground colours
'
Explode 10, 17, 15, 64, 112, 0
FOR I% = 11 TO 13: READ Me$: FastPrint I%, 20, Me$, 112: NEXT
SLEEP 6: FlushKey
FOR I% = 1 TO 15
Label$ = "[ Colour:" + STR$(I%) + " ]"
J% = Randy%(1, 51): K% = Randy%(1, 13)
Attrib% = Attribute%(I%, 0)
PopUp K% + 1, J% + 1, 7, 24, Attrib%, 4, 0, 0
FastPrint K% + 1, J% + 6, Label$, Attrib%
SLEEP 1: FlushKey
NEXT I%
Attrib% = Attribute%(31, 1)
PopUp 7, 20, 7, 24, Attrib%, 4, 2, 0
FastPrint 7, 25, "[ Colour: 31 ]", Attrib%
SLEEP 4: FlushKey: FOR I% = 1 TO 16: ShutUp 0: NEXT
' Demonstrate left and right shadow.
'
Explode 10, 17, 15, 64, 112, 0
FOR I% = 12 TO 13: READ Me$: FastPrint I%, 19, Me$, 112: NEXT
SLEEP 6: FlushKey: PopUp 2, 2, 11, 30, Attribute%(15, 1), 7, 0, 0
SLEEP 3: FlushKey: ShutUp 0: Explode 10, 17, 15, 64, 112, 0
FOR I% = 12 TO 13: READ Me$: FastPrint I%, 19, Me$, 112: NEXT
SLEEP 6: FlushKey: Attrib% = Attribute%(14, 5)
PopUp 5, 5, 10, 30, Attrib%, 2, 1, 0
FastPrint 9, 14, "Left Shadow", Attrib%
SLEEP 2: FlushKey: Attrib% = Attribute%(0, 2)
PopUp 5, 45, 10, 30, Attrib%, 2, 2, 0
FastPrint 9, 54, "Right Shadow", Attrib%
SLEEP 2: FlushKey: ShutUp 0: ShutUp 0
' Demonstrate zooming and imploding windows.
'
Explode 10, 17, 15, 64, 112, 0
FastPrint 12, 31, "Windows can be zoomed", 112
FastPrint 13, 33, "onto the screen.", 112
SLEEP 3: FlushKey: PopUp 2, 2, 15, 60, Attribute%(0, 2), 2, 0, -1
SLEEP 2: FlushKey: PopUp 13, 10, 10, 60, Attribute%(0, 3), 3, 0, -1
SLEEP 2: FlushKey: PopUp 7, 33, 10, 45, Attribute%(14, 5), 1, 0, -1
SLEEP 2: FlushKey: Attrib% = Attribute%(15, 4)
PopUp 9, 10, 12, 63, Attrib%, 2, 1, -1
FastPrint 14, 32, "<<< W O W >>>", Attrib%
SLEEP 3: FlushKey: FOR I% = 1 TO 4: ShutUp -1: NEXT
' Demonstrate overlapping windows.
'
Explode 10, 17, 15, 64, 112, 0
FOR I% = 10 TO 14: READ Me$: FastPrint I%, 19, Me$, 112: NEXT
SLEEP 6: FlushKey: Explode 10, 17, 15, 64, 112, 0
FOR I% = 10 TO 15: READ Me$: FastPrint I%, 19, Me$, 112: NEXT
SLEEP 6: FlushKey: Explode 10, 17, 15, 64, 112, 0
FOR I% = 10 TO 15: READ Me$: FastPrint I%, 19, Me$, 112: NEXT
SLEEP 6: FlushKey: Attrib% = Attribute%(0, 2)
PopUp 3, 5, 15, 45, Attrib%, 4, 1, -1
FastPrint 9, 14, "This is the first level ...", Attrib%
SLEEP 2: FlushKey: Attrib% = Attribute%(15, 4)
PopUp 6, 29, 17, 50, Attrib%, 4, 1, -1
FastPrint 12, 40, "This is the second level ...", Attrib%
SLEEP 2: FlushKey: Attrib% = Attribute%(0, 3)
PopUp 9, 22, 15, 35, Attrib%, 4, 1, -1
FastPrint 16, 26, "This is the third level ...", Attrib%
SLEEP 2: FlushKey: FastPrint 16, 26, "Now to go back ... ", Attrib%
SLEEP 1: ShutUp -1: SLEEP 1: ShutUp -1: SLEEP 1: ShutUp -1: SLEEP 2
ShutUp -1: PopUp 4